{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\demonsong\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\IPython\\core\\interactiveshell.py:2728: DtypeWarning: Columns (12,49) have mixed types. Specify dtype option on import or set low_memory=False.\n",
      "  interactivity=interactivity, compiler=compiler, result=result)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "12.0\n"
     ]
    }
   ],
   "source": [
    "data_1 = pd.read_csv('../input/multi2binary/data_5.csv')\n",
    "data_1.head()\n",
    "print(data_1['word_len_words'].median())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\administrator\\appdata\\local\\programs\\python\\python35\\lib\\site-packages\\pandas\\core\\indexing.py:140: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  self._setitem_with_indexer(indexer, value)\n"
     ]
    }
   ],
   "source": [
    "def threshold(result):\n",
    "    boolean = (result['Score'] >= 4.0) & (result['Score'] < 4.732)\n",
    "    result['Score'].ix[boolean] = 4\n",
    "    result['Score'].ix[(result['Score'] >= 4.732)] = 5.0\n",
    "    return result\n",
    "\n",
    "result = pd.read_csv('../models/__models__/lgbm_test_101.csv')\n",
    "result.columns = ['Id', 'Score']\n",
    "\n",
    "result = threshold(result)\n",
    "result.head()\n",
    "\n",
    "result.to_csv('../result/lgbm_single_0.7185405005353127.csv', index = False, header = False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['neg_word_ratio_words',\n",
       " 'neg_word_ratio_words_jieba',\n",
       " 'sentiment_self',\n",
       " 'Vector_37',\n",
       " 'Vector_38',\n",
       " 'Vector_24',\n",
       " 'ad_ratio',\n",
       " 'Vector_182',\n",
       " 'Vector_13',\n",
       " 'Vector_110',\n",
       " 'senti_snownlp',\n",
       " 'Vector_161',\n",
       " 'Vector_56',\n",
       " 'Vector_171',\n",
       " 'Vector_168',\n",
       " 'Vector_59',\n",
       " 'Vector_17',\n",
       " 'Vector_69',\n",
       " 'Vector_165',\n",
       " 'Vector_108',\n",
       " 'Vector_46',\n",
       " 'Vector_114',\n",
       " 'word_sum_wordsdict_1',\n",
       " 'Vector_192',\n",
       " 'Vector_143',\n",
       " 'word_std_wordsdict_2',\n",
       " 'Vector_135',\n",
       " 'Vector_98',\n",
       " 'word_last_wordsscore_5',\n",
       " 'd_ratio',\n",
       " 'word_sum_wordsdict_2',\n",
       " 'Vector_12',\n",
       " 'word_sum_wordsscore_3',\n",
       " 'Vector_129',\n",
       " 'Vector_86',\n",
       " 'Vector_58',\n",
       " 'Vector_63',\n",
       " 'Vector_7',\n",
       " 'Vector_145',\n",
       " 'Vector_190',\n",
       " 'Vector_118',\n",
       " 'Vector_156',\n",
       " 'Vector_22',\n",
       " 'Vector_187',\n",
       " 'Vector_90',\n",
       " 'Vector_123',\n",
       " 'word_std_words_jieba',\n",
       " 'word_std_wordsscore_3',\n",
       " 'word_first_words',\n",
       " 'Vector_45',\n",
       " 'Vector_68',\n",
       " 'Vector_47',\n",
       " 'Vector_134',\n",
       " 'Vector_124',\n",
       " 'Vector_101',\n",
       " 'Vector_83',\n",
       " 'Vector_41',\n",
       " 'Vector_2',\n",
       " 'Vector_55',\n",
       " 'Vector_67',\n",
       " 'Vector_31',\n",
       " 'word_sum_wordsscore_5',\n",
       " 'Vector_111',\n",
       " 'Vector_126',\n",
       " 'Vector_180',\n",
       " 'Vector_5',\n",
       " 'Vector_35',\n",
       " 'Vector_33',\n",
       " 'Vector_102',\n",
       " 'Vector_96',\n",
       " 'Vector_65',\n",
       " 'Vector_29',\n",
       " 'Vector_87',\n",
       " 'strLen',\n",
       " 'Vector_176',\n",
       " 'Vector_14',\n",
       " 'Vector_8',\n",
       " 'Vector_25',\n",
       " 'Vector_30',\n",
       " 'Vector_198',\n",
       " 'Vector_147',\n",
       " 'Vector_172',\n",
       " 'word_max_words_jieba',\n",
       " 'Vector_74',\n",
       " 'Vector_170',\n",
       " 'word_first_wordsscore_5',\n",
       " 'Vector_130',\n",
       " 'Vector_77',\n",
       " 'Vector_75',\n",
       " 'Vector_73',\n",
       " 'Vector_112',\n",
       " 'Vector_28',\n",
       " 'Vector_113',\n",
       " 'Vector_163',\n",
       " 'Vector_131',\n",
       " 'Vector_157',\n",
       " 'Vector_50',\n",
       " 'Vector_95',\n",
       " 'Vector_196',\n",
       " 'Vector_104',\n",
       " 'Vector_34',\n",
       " 'Vector_142',\n",
       " 'Vector_20',\n",
       " 'Vector_18',\n",
       " 'word_first_wordsscore_3',\n",
       " 'word_last_words',\n",
       " 'word_last_wordsscore_3',\n",
       " 'Vector_109',\n",
       " 'Vector_81',\n",
       " 'Vector_82',\n",
       " 'Vector_76',\n",
       " 'Vector_116',\n",
       " 'Vector_48',\n",
       " 'Vector_185',\n",
       " 'Vector_181',\n",
       " 'Vector_122',\n",
       " 'Vector_10',\n",
       " 'Vector_189',\n",
       " 'Vector_52',\n",
       " 'Vector_195',\n",
       " 'Vector_128',\n",
       " 'Vector_164',\n",
       " 'word_std_wordsdict_1',\n",
       " 'Vector_183',\n",
       " 'Vector_49',\n",
       " 'Vector_186',\n",
       " 'word_std_words',\n",
       " 'Vector_53',\n",
       " 'Vector_88',\n",
       " 'Vector_179',\n",
       " 'Vector_188',\n",
       " 'Vector_132',\n",
       " 'Vector_151',\n",
       " 'Vector_61',\n",
       " 'Vector_70',\n",
       " 'Vector_42',\n",
       " 'Vector_11',\n",
       " 'Vector_85',\n",
       " 'Vector_120',\n",
       " 'Vector_3',\n",
       " 'Vector_23',\n",
       " 'senti_min_window_1_words_jieba',\n",
       " 'Vector_91',\n",
       " 'Vector_1',\n",
       " 'Vector_174',\n",
       " 'senti_min_window_1_words',\n",
       " 'senti_std_window_1_words',\n",
       " 'w_ratio',\n",
       " 'Vector_72',\n",
       " 'Vector_103',\n",
       " 'Vector_99',\n",
       " 'Vector_100',\n",
       " 'c_ratio',\n",
       " 'Vector_167',\n",
       " 'Vector_78',\n",
       " 'Vector_150',\n",
       " 'Vector_40',\n",
       " 'Vector_60',\n",
       " 'Vector_125',\n",
       " 'Vector_51',\n",
       " 'Vector_80',\n",
       " 'Vector_137',\n",
       " 'Vector_160',\n",
       " 'Vector_152',\n",
       " 'Vector_178',\n",
       " 'Vector_169',\n",
       " 'word_last_words_jieba',\n",
       " 'Vector_15',\n",
       " 'Vector_94',\n",
       " 'Vector_26',\n",
       " 'word_first_wordsdict_2',\n",
       " 'Vector_9',\n",
       " 'Vector_133',\n",
       " 'Vector_93',\n",
       " 'Vector_127',\n",
       " 'Vector_159',\n",
       " 'senti_std_window_1_words_jieba',\n",
       " 'Vector_79',\n",
       " 'Vector_27',\n",
       " 'Vector_173',\n",
       " 'Vector_184',\n",
       " 'Vector_32',\n",
       " 'Vector_36',\n",
       " 'Vector_154',\n",
       " 'Vector_84',\n",
       " 'Vector_119',\n",
       " 'Vector_141',\n",
       " 'vf_ratio',\n",
       " 'Vector_146',\n",
       " 'Vector_199',\n",
       " 'v_ratio',\n",
       " 'senti_avg_window_1_words',\n",
       " 'word_std_words_jiebadict_1',\n",
       " 'Vector_177',\n",
       " 'Vector_197',\n",
       " 'word_sum_words_jieba',\n",
       " 'Vector_153',\n",
       " 'Vector_106',\n",
       " 'Vector_62',\n",
       " 'Vector_149',\n",
       " 'senti_avg_window_1_words_jieba',\n",
       " 'Vector_71',\n",
       " 'Vector_19',\n",
       " 'Vector_97',\n",
       " 'Vector_194',\n",
       " 'Vector_191',\n",
       " 'Vector_121',\n",
       " 'Vector_117',\n",
       " 'Vector_0',\n",
       " 'Vector_138',\n",
       " 'word_sum_words_jiebadict_1',\n",
       " 'Vector_144',\n",
       " 'word_sum_words',\n",
       " 'word_std_words_jiebascore_3',\n",
       " 'Vector_162',\n",
       " 'Vector_44',\n",
       " 'Vector_158',\n",
       " 'Vector_43',\n",
       " 'Vector_175',\n",
       " 'word_max_words',\n",
       " 'Vector_6',\n",
       " 'Vector_39',\n",
       " 'Vector_21',\n",
       " 'Vector_155',\n",
       " 'Vector_140',\n",
       " 'Vector_89',\n",
       " 'Vector_16',\n",
       " 'Vector_57',\n",
       " 'Vector_105',\n",
       " 'Vector_139',\n",
       " 'word_std_words_jiebascore_5',\n",
       " 'word_std_wordsscore_5',\n",
       " 'Vector_166',\n",
       " 'senti_std_window_7_words_jieba',\n",
       " 'Vector_54',\n",
       " 'word_std_wordsscore_4',\n",
       " 'Vector_193',\n",
       " 'word_max_wordsscore_5',\n",
       " 'Vector_115',\n",
       " 'senti_max_window_1_words_jieba',\n",
       " 'entropy',\n",
       " 'ude1_ratio',\n",
       " 'word_last_wordsdict_2',\n",
       " 'word_std_words_jiebadict_2',\n",
       " 'senti_max_window_3_words',\n",
       " 'ry_ratio',\n",
       " 'Vector_136',\n",
       " 'Vector_107',\n",
       " 'Vector_4',\n",
       " 'senti_max_window_1_words',\n",
       " 'Vector_148',\n",
       " 'Vector_66',\n",
       " 'Vector_64',\n",
       " 'senti_std_window_3_words_jieba',\n",
       " 'word_last_wordsdict_1',\n",
       " 'Vector_92',\n",
       " 'p_ratio',\n",
       " 'word_first_words_jieba',\n",
       " 'senti_median_window_3_words_jieba',\n",
       " 'senti_min_window_5_words',\n",
       " 'word_max_words_jiebascore_5',\n",
       " 'word_sum_words_jiebascore_3',\n",
       " 'y_ratio',\n",
       " 'word_last_words_jiebascore_5',\n",
       " 'senti_std_window_3_words',\n",
       " 'word_max_words_jiebadict_2',\n",
       " 'senti_min_window_3_words',\n",
       " 'senti_std_window_5_words',\n",
       " 'word_std_words_jiebascore_4',\n",
       " 'word_max_wordsscore_4',\n",
       " 'word_max_wordsdict_1',\n",
       " 'word_sum_words_jiebadict_2',\n",
       " 'word_sum_words_jiebascore_5',\n",
       " 'b_ratio',\n",
       " 'ule_ratio',\n",
       " 'word_first_words_jiebascore_5',\n",
       " 'senti_max_window_5_words',\n",
       " 'senti_max_window_3_words_jieba',\n",
       " 'senti_median_window_7_words_jieba',\n",
       " 'word_first_wordsscore_4',\n",
       " 'senti_max_window_7_words_jieba',\n",
       " 'word_sum_wordsscore_4',\n",
       " 'senti_min_window_5_words_jieba',\n",
       " 'n_ratio',\n",
       " 'senti_std_window_5_words_jieba',\n",
       " 'word_max_wordsdict_2',\n",
       " 'senti_median_window_3_words',\n",
       " 'senti_max_window_5_words_jieba',\n",
       " 'senti_min_window_7_words',\n",
       " 'word_first_wordsdict_1',\n",
       " 'senti_min_window_7_words_jieba',\n",
       " 'neg_word_sum_words_jieba',\n",
       " 'word_max_words_jiebascore_4',\n",
       " 'word_max_words_jiebadict_1',\n",
       " 'word_last_words_jiebascore_3',\n",
       " 'senti_max_window_7_words',\n",
       " 'rr_ratio',\n",
       " 'q_ratio',\n",
       " 'senti_min_window_3_words_jieba',\n",
       " 'senti_median_window_7_words',\n",
       " 'senti_std_window_7_words',\n",
       " 'senti_median_window_5_words',\n",
       " 'senti_avg_window_7_words',\n",
       " 'word_last_wordsscore_4',\n",
       " 'word_last_words_jiebadict_1',\n",
       " 'senti_avg_window_5_words_jieba',\n",
       " 'senti_avg_window_3_words_jieba',\n",
       " 'a_ratio',\n",
       " 'senti_median_window_5_words_jieba',\n",
       " 'senti_avg_window_3_words',\n",
       " 'senti_avg_window_7_words_jieba',\n",
       " 'word_sum_words_jiebascore_4',\n",
       " 'word_last_words_jiebascore_4',\n",
       " 'ryv_ratio',\n",
       " 'nx_ratio',\n",
       " 'word_len_words_jieba',\n",
       " 'nz_ratio',\n",
       " 'cc_ratio',\n",
       " 'word_last_words_jiebadict_2',\n",
       " 'vshi_ratio',\n",
       " 'address_all_max',\n",
       " 'neg_word_sum_words',\n",
       " 'uyy_ratio',\n",
       " 'word_ntusd_hasPosNumwords',\n",
       " 'm_ratio',\n",
       " 'f_ratio',\n",
       " 'rzv_ratio',\n",
       " 'rz_ratio',\n",
       " 'ns_ratio',\n",
       " 'word_first_words_jiebascore_3',\n",
       " 'senti_avg_window_5_words',\n",
       " 'senti_median_window_1_words',\n",
       " 'mq_ratio',\n",
       " 'word_first_words_jiebadict_1',\n",
       " 'word_ntusd_hasNegNumwords_jieba',\n",
       " 'word_len_words',\n",
       " 'word_ntusd_hasNegwords_jieba',\n",
       " 'vi_ratio',\n",
       " 'rzs_ratio',\n",
       " 'vl_ratio',\n",
       " 'vn_ratio',\n",
       " 'address_all_ratio',\n",
       " 'f',\n",
       " 'vyou_ratio',\n",
       " 'senti_median_window_1_words_jieba',\n",
       " 'word_ntusd_hasNegNumwords',\n",
       " 'qv_ratio',\n",
       " 'address_neg_all',\n",
       " 'w',\n",
       " 't_ratio',\n",
       " 'qt_ratio',\n",
       " 'word_first_words_jiebadict_2',\n",
       " 'word_first_words_jiebascore_4',\n",
       " 'ad',\n",
       " 'nr_ratio',\n",
       " 'address_all_sum',\n",
       " 'significant_word_encoding_words',\n",
       " 'd',\n",
       " 'udh_ratio',\n",
       " 'v',\n",
       " 'udeng_ratio',\n",
       " 'ntc_ratio',\n",
       " 'word_ntusd_hasPosNumwords_jieba',\n",
       " 'e_ratio',\n",
       " 'ng_ratio',\n",
       " 'nt_ratio',\n",
       " 'vf',\n",
       " 's_ratio',\n",
       " 'gm_ratio',\n",
       " 'uguo_ratio',\n",
       " 'ns',\n",
       " 'z_ratio',\n",
       " 'word_ntusd_hasPoswords',\n",
       " 'n',\n",
       " 'gg_ratio',\n",
       " 'significant_word_encoding_words_jieba',\n",
       " 'o_ratio',\n",
       " 'u_ratio',\n",
       " 'a',\n",
       " 'nz',\n",
       " 'e',\n",
       " 'nsf_ratio',\n",
       " 'ude1',\n",
       " 'nnt_ratio',\n",
       " 'ule',\n",
       " 'ude2_ratio',\n",
       " 'uls_ratio',\n",
       " 'rys_ratio',\n",
       " 'c',\n",
       " 'pbei_ratio',\n",
       " 'b',\n",
       " 'nis_ratio',\n",
       " 'nt',\n",
       " 'uzhe_ratio',\n",
       " 'r_ratio',\n",
       " 'address_neg_ratio',\n",
       " 'word_ntusd_hasNegwords',\n",
       " 'rzt_ratio',\n",
       " 'm',\n",
       " 'tg_ratio',\n",
       " 'vyou',\n",
       " 'an',\n",
       " 'cc',\n",
       " 'ude3_ratio',\n",
       " 'vi',\n",
       " 'l_ratio',\n",
       " 'rz',\n",
       " 'al_ratio',\n",
       " 'dl_ratio',\n",
       " 'i_ratio',\n",
       " 'nx',\n",
       " 'bl_ratio',\n",
       " 'ag_ratio',\n",
       " 'nf_ratio',\n",
       " 'vd_ratio',\n",
       " 'nrj_ratio',\n",
       " 'rzs',\n",
       " 'y',\n",
       " 'rr',\n",
       " 'ry',\n",
       " 'pba_ratio',\n",
       " 'vn',\n",
       " 'word_ntusd_hasPoswords_jieba',\n",
       " 'vshi',\n",
       " 'ag',\n",
       " 'q',\n",
       " 'uzhi_ratio',\n",
       " 'sentiment',\n",
       " 'nnd_ratio',\n",
       " 't',\n",
       " 'mq',\n",
       " 'k',\n",
       " 's',\n",
       " 'vg_ratio',\n",
       " 'rzv',\n",
       " 'vl',\n",
       " 'p',\n",
       " 'ng',\n",
       " 'uyy',\n",
       " 'k_ratio',\n",
       " 'j_ratio',\n",
       " 'nr',\n",
       " 'an_ratio',\n",
       " 'qv',\n",
       " 'l',\n",
       " 'nrf_ratio',\n",
       " 'qt',\n",
       " 'address_neg_sum',\n",
       " 'vg',\n",
       " 'r',\n",
       " 'nis',\n",
       " 'ude3',\n",
       " 'nnt',\n",
       " 'pbei',\n",
       " 'usuo_ratio',\n",
       " 'dg_ratio',\n",
       " 'nto_ratio',\n",
       " 'udeng',\n",
       " 'udh',\n",
       " 'nrj',\n",
       " 'nsf',\n",
       " 'ryv',\n",
       " 'pba',\n",
       " 'o',\n",
       " 'vd',\n",
       " 'z',\n",
       " 'uzhi',\n",
       " 'nf',\n",
       " 'gg',\n",
       " 'i',\n",
       " 'dl',\n",
       " 'nrf',\n",
       " 'al',\n",
       " 'ulian_ratio',\n",
       " 'gi_ratio',\n",
       " 'dg',\n",
       " 'uls',\n",
       " 'rzt',\n",
       " 'j',\n",
       " 'gi',\n",
       " 'ntc',\n",
       " 'nto',\n",
       " 'tg',\n",
       " 'nnd',\n",
       " 'uguo',\n",
       " 'ude2',\n",
       " 'nhd',\n",
       " 'usuo',\n",
       " 'h_ratio',\n",
       " 'ni',\n",
       " 'u',\n",
       " 'nit',\n",
       " 'nmc',\n",
       " 'nba',\n",
       " 'ulian',\n",
       " 'g',\n",
       " 'uzhe',\n",
       " 'nts',\n",
       " 'nhm',\n",
       " 'nth',\n",
       " 'gm',\n",
       " 'ntu',\n",
       " 'ntch',\n",
       " 'ntcb',\n",
       " 'Mg',\n",
       " 'ntcf',\n",
       " 'Rg',\n",
       " 'rys',\n",
       " 'ryt',\n",
       " 'nr1',\n",
       " 'h',\n",
       " 'mg_ratio',\n",
       " 'x',\n",
       " 'bl',\n",
       " 'x_ratio',\n",
       " 'vx',\n",
       " 'Mg_ratio',\n",
       " 'Rg_ratio',\n",
       " 'ryt_ratio',\n",
       " 'mg',\n",
       " 'vx_ratio',\n",
       " 'gb',\n",
       " 'gb_ratio',\n",
       " 'gc_ratio',\n",
       " 'gp_ratio',\n",
       " 'g_ratio',\n",
       " 'nba_ratio',\n",
       " 'nmc_ratio',\n",
       " 'nit_ratio',\n",
       " 'ni_ratio',\n",
       " 'nhd_ratio',\n",
       " 'nhm_ratio',\n",
       " 'nth_ratio',\n",
       " 'nts_ratio',\n",
       " 'ntu_ratio',\n",
       " 'gc',\n",
       " 'ntch_ratio',\n",
       " 'ntcb_ratio',\n",
       " 'ntcf_ratio',\n",
       " 'nr1_ratio',\n",
       " 'gp',\n",
       " 'word_tijian']"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def get_feature_importance(filename):\n",
    "    feature_df = pd.read_csv('../models/info/' + filename)\n",
    "    feature_names = feature_df.columns\n",
    "    sort_feature = [val for val in feature_names if val != 'feature_name']\n",
    "    feature_df = feature_df.sort_values(by = sort_feature, ascending = False)\n",
    "    return feature_df\n",
    "\n",
    "df = get_feature_importance('sub_feature_df.csv')\n",
    "df['feature_name'].values.tolist()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = []\n",
    "y = []\n",
    "with open('../input/feature.info', 'r') as outf:\n",
    "    for line in outf.readlines():\n",
    "        line = line.replace('\\n', '')\n",
    "        line = line.split(' ')\n",
    "        x.append(int(line[0]))\n",
    "        y.append(float(line[1]))\n",
    "        \n",
    "plt.plot(x, y, 'r')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-0.00024559589601835796\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1f2c741ae48>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "rmse = pd.read_csv('../models/info/sub_feature_df.csv')\n",
    "shift = rmse['rmse'] - rmse['rmse'].shift(1)\n",
    "shift = shift[shift<0]\n",
    "print(np.median(shift.values))\n",
    "\n",
    "other = pd.read_csv('../models/info/sub_feature_02182137.csv')\n",
    "other = other['rmse'].values\n",
    "\n",
    "rmse = rmse['rmse'].values\n",
    "x = list(range(len(rmse)))\n",
    "plt.ylim(0.604, 0.610)\n",
    "plt.plot(x, rmse, 'r')\n",
    "plt.plot(range(len(other)), other, 'b')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5    48760\n",
      "4    25377\n",
      "3     8450\n",
      "2      872\n",
      "1      533\n",
      "Name: Score, dtype: int64\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x27f31e9c828>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.5805314791884941, 0.3021359177064482, 0.10060481950661967, 0.010381941137251167, 0.00634584246118678]\n"
     ]
    }
   ],
   "source": [
    "train = pd.read_csv('../input/train_first.csv')\n",
    "\n",
    "train.drop_duplicates(subset = 'Discuss', keep = 'first', inplace = True)\n",
    "print(train.Score.value_counts())\n",
    "train.Score.value_counts().plot(kind = 'bar')\n",
    "plt.show()\n",
    "\n",
    "score = train.Score.value_counts().values.tolist()\n",
    "print([i / np.sum(score) for i in score])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "     index                                    Id  \\\n",
      "713  82031  c5fd4a57-550f-3d8a-9738-15b323108725   \n",
      "682  77982  325c9432-f392-373f-addc-cb0488db6511   \n",
      "845  97561  777b17eb-ec22-3076-ac21-6bf994883cbd   \n",
      "588  65122  e88c6edf-8afc-33de-a38a-c2d3ebb4e396   \n",
      "461  49601  55e6cff8-7863-37e9-b9cc-f0a7b789cfb9   \n",
      "\n",
      "                                               Discuss  Score  \n",
      "713                                   山上晚上有没有人自带帐篷去睡的呢      2  \n",
      "682                                          实际没有宣传图片好      2  \n",
      "845                                     失望????????????      2  \n",
      "588              去长城的时候路过这里，没有太多的印象，据说这里有凯宾斯基最漂亮的一家酒店。      2  \n",
      "461  对于身体欠佳的人来说，景山的高度还是蛮有挑战性的，不过爬到山顶，即可一览故宫的全貌，甚至可以...      2  \n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Discuss</th>\n",
       "      <th>Id</th>\n",
       "      <th>Score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>山上晚上有没有人自带帐篷去睡的呢服务态度不好，索道有点贵，再便宜点好了</td>\n",
       "      <td>Score_2_1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>山上晚上有没有人自带帐篷去睡的呢本来就是太湖边上一个大公园而已，因为出名，收太贵的门票，不值...</td>\n",
       "      <td>Score_2_2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>山上晚上有没有人自带帐篷去睡的呢太差了，去了绝对后悔，门票贵，还没什么可看的</td>\n",
       "      <td>Score_2_3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>山上晚上有没有人自带帐篷去睡的呢太黑暗了.门票太贵.太贵.性价比超级低</td>\n",
       "      <td>Score_2_4</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>山上晚上有没有人自带帐篷去睡的呢没有进去，知道里面就是个土包，所以没有进去，售票处也没人买票...</td>\n",
       "      <td>Score_2_5</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                             Discuss         Id  Score\n",
       "0                山上晚上有没有人自带帐篷去睡的呢服务态度不好，索道有点贵，再便宜点好了  Score_2_1      2\n",
       "1  山上晚上有没有人自带帐篷去睡的呢本来就是太湖边上一个大公园而已，因为出名，收太贵的门票，不值...  Score_2_2      2\n",
       "2             山上晚上有没有人自带帐篷去睡的呢太差了，去了绝对后悔，门票贵，还没什么可看的  Score_2_3      2\n",
       "3                山上晚上有没有人自带帐篷去睡的呢太黑暗了.门票太贵.太贵.性价比超级低  Score_2_4      2\n",
       "4  山上晚上有没有人自带帐篷去睡的呢没有进去，知道里面就是个土包，所以没有进去，售票处也没人买票...  Score_2_5      2"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 丰富标签2\n",
    "train_2 = train[train['Score'] == 2].reset_index()\n",
    "\n",
    "train_2.head()\n",
    "random_choice = np.random.choice(train_2.shape[0], 200, replace = False)\n",
    "\n",
    "train_2_sub1 = train_2.loc[random_choice[:100]]\n",
    "train_2_sub2 = train_2.loc[random_choice[100:]]\n",
    "print(train_2_sub1.head())\n",
    "\n",
    "sub_id = 1\n",
    "ID = []\n",
    "Discuss = []\n",
    "Score = []\n",
    "for i in range(100):\n",
    "    for j in range(100, 200):\n",
    "        ID.append('Score_2_' + str(sub_id))\n",
    "        Score.append(2)\n",
    "        new_discuss = train_2_sub1.loc[random_choice[i], 'Discuss'] + train_2_sub2.loc[random_choice[j], 'Discuss']  \n",
    "        Discuss.append(new_discuss)\n",
    "        sub_id += 1\n",
    "        \n",
    "train_score2 = pd.DataFrame({\n",
    "    'Id' : ID,\n",
    "    'Discuss' : Discuss,\n",
    "    'Score' : Score\n",
    "})\n",
    "\n",
    "train_score2.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "     index                                    Id  \\\n",
      "470  90431  a4df5cec-8e81-3077-b624-b17543300393   \n",
      "523  98306  4f9c3874-cda5-312e-b26e-57ed7efc72ea   \n",
      "67   11813  353d7556-f78a-3f58-bcf9-c884c15c52d2   \n",
      "452  87443  7d27d5b5-c513-3945-8c9f-5c155a7ca08c   \n",
      "472  90507  974f9595-8f1d-31ab-894c-6e418105a8b4   \n",
      "\n",
      "                                               Discuss  Score  \n",
      "470  不讨巧，碰到下大雨，山上下雨确实很不好玩，太危险了。山上景点之间真有得走，没走到西海大峡谷的...      1  \n",
      "523                         冬天是她们最美的地方，但是要想看见雾凇也是需要运气的      1  \n",
      "67   差劲，景区特别小，半小时走完，到处是收费，湖边全被人工设施占据，连照相的地方都没有，油菜花海...      1  \n",
      "452  去了以后感觉很失望，一点也没有古镇的感觉，河道两边都是租出去的小商贩，里面卖的都是几元店的东...      1  \n",
      "472                   坑爹的古城维护费，也不知道为什么要把木府和紫禁城比，没有可比性啊      1  \n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Discuss</th>\n",
       "      <th>Id</th>\n",
       "      <th>Score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>不讨巧，碰到下大雨，山上下雨确实很不好玩，太危险了。山上景点之间真有得走，没走到西海大峡谷的...</td>\n",
       "      <td>Score_1_1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>不讨巧，碰到下大雨，山上下雨确实很不好玩，太危险了。山上景点之间真有得走，没走到西海大峡谷的...</td>\n",
       "      <td>Score_1_2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>不讨巧，碰到下大雨，山上下雨确实很不好玩，太危险了。山上景点之间真有得走，没走到西海大峡谷的...</td>\n",
       "      <td>Score_1_3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>不讨巧，碰到下大雨，山上下雨确实很不好玩，太危险了。山上景点之间真有得走，没走到西海大峡谷的...</td>\n",
       "      <td>Score_1_4</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>不讨巧，碰到下大雨，山上下雨确实很不好玩，太危险了。山上景点之间真有得走，没走到西海大峡谷的...</td>\n",
       "      <td>Score_1_5</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                             Discuss         Id  Score\n",
       "0  不讨巧，碰到下大雨，山上下雨确实很不好玩，太危险了。山上景点之间真有得走，没走到西海大峡谷的...  Score_1_1      1\n",
       "1  不讨巧，碰到下大雨，山上下雨确实很不好玩，太危险了。山上景点之间真有得走，没走到西海大峡谷的...  Score_1_2      1\n",
       "2  不讨巧，碰到下大雨，山上下雨确实很不好玩，太危险了。山上景点之间真有得走，没走到西海大峡谷的...  Score_1_3      1\n",
       "3  不讨巧，碰到下大雨，山上下雨确实很不好玩，太危险了。山上景点之间真有得走，没走到西海大峡谷的...  Score_1_4      1\n",
       "4  不讨巧，碰到下大雨，山上下雨确实很不好玩，太危险了。山上景点之间真有得走，没走到西海大峡谷的...  Score_1_5      1"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 丰富标签1\n",
    "train_1 = train[train['Score'] == 1].reset_index()\n",
    "\n",
    "train_1.head()\n",
    "random_choice = np.random.choice(train_1.shape[0], 200, replace = False)\n",
    "\n",
    "train_1_sub1 = train_1.loc[random_choice[:100]]\n",
    "train_1_sub2 = train_1.loc[random_choice[100:]]\n",
    "print(train_1_sub1.head())\n",
    "\n",
    "sub_id = 1\n",
    "ID = []\n",
    "Discuss = []\n",
    "Score = []\n",
    "for i in range(100):\n",
    "    for j in range(100, 200):\n",
    "        ID.append('Score_1_' + str(sub_id))\n",
    "        Score.append(1)\n",
    "        new_discuss = train_1_sub1.loc[random_choice[i], 'Discuss'] + train_1_sub2.loc[random_choice[j], 'Discuss']  \n",
    "        Discuss.append(new_discuss)\n",
    "        sub_id += 1\n",
    "        \n",
    "train_score1 = pd.DataFrame({\n",
    "    'Id' : ID,\n",
    "    'Discuss' : Discuss,\n",
    "    'Score' : Score\n",
    "})\n",
    "\n",
    "train_score1.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# train_score12 = pd.concat([train_score2, train_score1])\n",
    "# train_score12.to_csv('../input/subset12/train_score12.csv', columns = ['Id', 'Discuss', 'Score'], index = False, encoding = 'utf-8')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "4.672876302633246\n",
      "4.498723581449361\n",
      "4.654087637769633\n",
      "4.664621008840737\n",
      "4.683025299441327\n",
      "5\n"
     ]
    }
   ],
   "source": [
    "predict = pd.read_csv('../input/predict_first.csv')\n",
    "predict_label = pd.read_csv('../result/lgb_0.5971286287052687_02141613.csv')\n",
    "predict_label.columns = ['Id', 'Score']\n",
    "predict_label.head()\n",
    "\n",
    "predict = pd.merge(predict, predict_label, on = 'Id', how = 'left')\n",
    "predict_discuss = predict['Discuss'].values\n",
    "label = predict['Score'].values\n",
    "\n",
    "cnt = 0\n",
    "for i, discuss in enumerate(predict_discuss):\n",
    "    if '体检' in discuss:\n",
    "        cnt += 1\n",
    "        print(label[i])\n",
    "        \n",
    "print(cnt)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "predict = pd.read_csv('../input/train_first.csv')\n",
    "\n",
    "def allOneLabel(train, word):\n",
    "    predict_discuss = predict['Discuss'].values\n",
    "    label = predict['Score'].values\n",
    "    cnt = 0\n",
    "    label_ = -1\n",
    "    for i, discuss in enumerate(predict_discuss):\n",
    "        if word in discuss:\n",
    "            if label_ == -1: label_ = label[i]\n",
    "            elif label_ != label[i]: return False\n",
    "            cnt += 1\n",
    "    print(cnt, label_, word)\n",
    "    return True"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Id</th>\n",
       "      <th>Discuss</th>\n",
       "      <th>Score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>63574</th>\n",
       "      <td>00db70da-872a-36b5-8384-66852f7dc297</td>\n",
       "      <td>这个地方就是传说中人力扇风的场所，悬挂一把大扇子，仆人往下拉绳索，扇子摇动。</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>73279</th>\n",
       "      <td>0baee8e9-bb74-339c-b586-a33e160f7942</td>\n",
       "      <td>都是人，5岁以下小孩基本玩不了什么，非常失望</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4245</th>\n",
       "      <td>dc26b915-5bd9-3f90-b4c3-6be26a10c2d6</td>\n",
       "      <td>大竹海之旅</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>53986</th>\n",
       "      <td>66eb9978-6e6f-3dad-8a9a-f68ca2dc7971</td>\n",
       "      <td>去了，不想看动物表演，总觉得可怜</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39352</th>\n",
       "      <td>59a54e91-7ca6-348a-a832-5429c979c744</td>\n",
       "      <td>长春电影制片厂大门，虽然门外有个售票处，但显然因为严寒而关着门，其实就连大门内的售票大厅的窗...</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                         Id  \\\n",
       "63574  00db70da-872a-36b5-8384-66852f7dc297   \n",
       "73279  0baee8e9-bb74-339c-b586-a33e160f7942   \n",
       "4245   dc26b915-5bd9-3f90-b4c3-6be26a10c2d6   \n",
       "53986  66eb9978-6e6f-3dad-8a9a-f68ca2dc7971   \n",
       "39352  59a54e91-7ca6-348a-a832-5429c979c744   \n",
       "\n",
       "                                                 Discuss  Score  \n",
       "63574             这个地方就是传说中人力扇风的场所，悬挂一把大扇子，仆人往下拉绳索，扇子摇动。      3  \n",
       "73279                             都是人，5岁以下小孩基本玩不了什么，非常失望      3  \n",
       "4245                                               大竹海之旅      3  \n",
       "53986                                   去了，不想看动物表演，总觉得可怜      3  \n",
       "39352  长春电影制片厂大门，虽然门外有个售票处，但显然因为严寒而关着门，其实就连大门内的售票大厅的窗...      3  "
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.utils import shuffle\n",
    "\n",
    "train = pd.read_csv('../input/train_first.csv')\n",
    "train_3 = train[train['Score'] == 3]\n",
    "\n",
    "train_3 = shuffle(train_3, random_state = 0)\n",
    "train_3.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Id</th>\n",
       "      <th>Discuss</th>\n",
       "      <th>Score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>63574</th>\n",
       "      <td>00db70da-872a-36b5-8384-66852f7dc297</td>\n",
       "      <td>这个地方就是传说中人力扇风的场所，悬挂一把大扇子，仆人往下拉绳索，扇子摇动。</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>73279</th>\n",
       "      <td>0baee8e9-bb74-339c-b586-a33e160f7942</td>\n",
       "      <td>都是人，5岁以下小孩基本玩不了什么，非常失望</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4245</th>\n",
       "      <td>dc26b915-5bd9-3f90-b4c3-6be26a10c2d6</td>\n",
       "      <td>大竹海之旅</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                         Id  \\\n",
       "63574  00db70da-872a-36b5-8384-66852f7dc297   \n",
       "73279  0baee8e9-bb74-339c-b586-a33e160f7942   \n",
       "4245   dc26b915-5bd9-3f90-b4c3-6be26a10c2d6   \n",
       "\n",
       "                                      Discuss  Score  \n",
       "63574  这个地方就是传说中人力扇风的场所，悬挂一把大扇子，仆人往下拉绳索，扇子摇动。      3  \n",
       "73279                  都是人，5岁以下小孩基本玩不了什么，非常失望      3  \n",
       "4245                                    大竹海之旅      3  "
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_3 = train_3[0:3]\n",
    "train_3.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def bacth(train, batch_size = 4):\n",
    "    train_score3 = train[train['Score'] == 3]\n",
    "    train_score4 = train[train['Score'] == 4]\n",
    "    train_score5 = train[train['Score'] == 5]\n",
    "    train_other = train[(train['Score'] == 1) | (train['Score'] == 2)]\n",
    "\n",
    "    # shuffle\n",
    "    train_score3 = shuffle(train_score3, random_state=0)\n",
    "    train_score4 = shuffle(train_score4, random_state=0)\n",
    "    train_score5 = shuffle(train_score5, random_state=0)\n",
    "\n",
    "    for i in range(batch_size):\n",
    "        train_3 = generate(train_score3, i, batch_size)\n",
    "        train_4 = generate(train_score4, i, batch_size)\n",
    "        train_5 = generate(train_score5, i, batch_size)\n",
    "        train_all = pd.concat([train_3, train_4, train_5, train_other])\n",
    "        yield train_all\n",
    "        \n",
    "def generate(train, i, batch_size):\n",
    "    size = train.shape[0] // batch_size\n",
    "    return train[i * size : (i + 1) * size]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0                                          Id  \\\n",
      "63574  00db70da-872a-36b5-8384-66852f7dc297   \n",
      "73279  0baee8e9-bb74-339c-b586-a33e160f7942   \n",
      "4245   dc26b915-5bd9-3f90-b4c3-6be26a10c2d6   \n",
      "53986  66eb9978-6e6f-3dad-8a9a-f68ca2dc7971   \n",
      "39352  59a54e91-7ca6-348a-a832-5429c979c744   \n",
      "\n",
      "                                                 Discuss  Score  \n",
      "63574             这个地方就是传说中人力扇风的场所，悬挂一把大扇子，仆人往下拉绳索，扇子摇动。      3  \n",
      "73279                             都是人，5岁以下小孩基本玩不了什么，非常失望      3  \n",
      "4245                                               大竹海之旅      3  \n",
      "53986                                   去了，不想看动物表演，总觉得可怜      3  \n",
      "39352  长春电影制片厂大门，虽然门外有个售票处，但显然因为严寒而关着门，其实就连大门内的售票大厅的窗...      3  \n",
      "1                                          Id  \\\n",
      "93390  5d2090ad-e858-391d-8cf6-104d7df2323b   \n",
      "33791  01fb66f2-4d17-3d1b-9878-ef2b7c04383e   \n",
      "53931  c88492a2-3f9f-31c7-a990-886fd83bb057   \n",
      "15625  aef9f63d-0521-3ca4-8025-1533e5fafb4b   \n",
      "56810  e5212938-0173-387f-8d61-c652b2c5f421   \n",
      "\n",
      "                                                 Discuss  Score  \n",
      "93390                          北坡下来的小景点，可以去溜达一圈，天然的生态氧吧！      3  \n",
      "33791                             风景漂亮，慢慢爬山慢慢游玩，属于看山看水旅程      3  \n",
      "53931                                元旦自驾过去玩玩。。。。。。。。。。。      3  \n",
      "15625                                          空气不错，价格偏贵      3  \n",
      "56810  三姐妹峰位于十里画廊峡谷最深处，是十里画廊的精华景点之一。<br />rn从南天门向对面望去...      3  \n",
      "2                                          Id  \\\n",
      "45442  1db20883-d3d7-3eaf-9d02-084e7e80486a   \n",
      "87243  4bd36a0c-faea-3f9a-b8f7-0fcb7900e266   \n",
      "99250  5d500eec-9079-32a8-a5ff-4849608ae853   \n",
      "63479  c7c9d5bf-cb69-3731-ae80-d605db337654   \n",
      "59075  759fd4ae-3008-3325-89c8-ce00ead6b099   \n",
      "\n",
      "                                    Discuss  Score  \n",
      "45442                大冬天冻成狗玩的 也不知道是冻的发抖还是吓的      3  \n",
      "87243  周庄夜景很漂亮，白天其实都一个样，若没去过木渎，甪直，同里，建议去周庄。      3  \n",
      "99250                      故人西辞黄鹤楼，烟花三月下扬州！      3  \n",
      "63479                                   还好吧      3  \n",
      "59075          人民英雄纪念碑是天安门广场上最引人注目的了，确实很壮观。      3  \n",
      "3                                          Id  \\\n",
      "29369  3a8ca087-9ffd-32c9-91eb-19020881eab0   \n",
      "21107  bfaa87ad-924e-3c21-9f0f-44c3be9ae5e5   \n",
      "34249  01dadd95-ac12-36a1-8eaf-64beeb7c0fcd   \n",
      "31888  3765a8fc-3780-3088-adf5-4dd88991a257   \n",
      "85920  6305ca2e-6dde-36c2-a7e1-f54602bf5450   \n",
      "\n",
      "                                                 Discuss  Score  \n",
      "29369                     历史痕迹久远，信徒不少，闹市中有这么一块幽静的地方还真不错。      3  \n",
      "21107  个人觉得风景一般，旁边吃饭的地方简直是垃圾。<br />rn唯一觉得有点意思的是抛绣球，抛给...      3  \n",
      "34249                         跟上海的南京路步行街差不多，熙熙攘攘的人群和大型商场      3  \n",
      "31888                                  如果是时间充足，可以坐船过去逛逛。      3  \n",
      "85920                                                 一般      3  \n"
     ]
    }
   ],
   "source": [
    "train = pd.read_csv('../input/train_first.csv')\n",
    "for _, train_all in enumerate(bacth(train, 4)):\n",
    "    print(_, train_all.head())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a = np.zeros((10, 1))\n",
    "a.reshape(-1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pre1</th>\n",
       "      <th>pre2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>30000.000000</td>\n",
       "      <td>29999.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>4.431307</td>\n",
       "      <td>4.351425</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.351052</td>\n",
       "      <td>0.412428</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.608716</td>\n",
       "      <td>0.768400</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>4.205974</td>\n",
       "      <td>4.128313</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>4.527592</td>\n",
       "      <td>4.490509</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>4.686618</td>\n",
       "      <td>4.643533</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>5.123354</td>\n",
       "      <td>4.931749</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               pre1          pre2\n",
       "count  30000.000000  29999.000000\n",
       "mean       4.431307      4.351425\n",
       "std        0.351052      0.412428\n",
       "min        0.608716      0.768400\n",
       "25%        4.205974      4.128313\n",
       "50%        4.527592      4.490509\n",
       "75%        4.686618      4.643533\n",
       "max        5.123354      4.931749"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pred1 = pd.read_csv('../result/lgb_0.6118091662988503_02122131.csv')\n",
    "pred1.columns = ['Id', 'pre1']\n",
    "pred2 = pd.read_csv('../result/lgb_0.5638598336255841_02141050.csv')\n",
    "pred2.columns = ['Id', 'pre2']\n",
    "\n",
    "pred1 = pd.merge(pred1, pred2, on = 'Id', how = 'left')\n",
    "pred1.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "82279 ['高房价', '花就谢', '折返', '堵是', '多雾', '安县', '炸油条', '广播体操', '下第二场', '上涨', '五谷杂粮', '肥大', '无定', '浴室', '冒牌', '烟光山', '潮湿', '撰书', '蚯蚓', '没人接', '步赢斋鞋店', '阔然', '麻将', '花点', '看样', '通行', '浏览', '最远点', '小狐狸', '女真', '筋', '区区', '株式会社', '类', '雾色', '皮包', '手表', '紫藤萝', '不怎么样', '管一下吧', '不可分的', '龙桥', '五花海', '爱党', '套起来', '山雾', '的萧山机场', '伞柄', '老林', '喜堂', '预知', '正中心', '有一帆', '粗制滥造', '干完', '冲击', '民安', '三面石峰', '历史性', '荟集', '手下', '元起', '摇手', '臭汗', '蓝景那', '刮风下雨', '绫', '大罗', '何不', '错车', '已于', '昌平区小汤山农业科技示范园东区内', '塔内', '玩一个人', '降妖', '潇湘', '酪', '娱乐场所', '地级市', '游弋', '涉', '标识牌', '包天', '龙身', '拳拳', '真身', '不自量力', '哈里路亚山', '山南门', '油菜', '临沧', '北口', '澄清', 'SB', '体检丽水医院', '京市', '薄命', '秋迹', '涌金门', '缓缓的']\n"
     ]
    }
   ],
   "source": [
    "# find some word that if one exist the score is sure\n",
    "def get_words(data_df, feature = 'words'):\n",
    "    data_df = data_df[feature].values\n",
    "    dictionary = []\n",
    "    for sent in data_df:\n",
    "        sent = sent[1:-1]\n",
    "        sent = sent.split(';')\n",
    "        for word in sent:\n",
    "            if word != '':\n",
    "                dictionary.append(word)\n",
    "    return dictionary\n",
    "\n",
    "# hankcs 分词数据库\n",
    "data_word = pd.read_csv('../input/train_word.csv')\n",
    "wordSet = list(set(get_words(data_word, 'words')))\n",
    "print(len(wordSet), wordSet[0:100])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1 4 高房价\n",
      "1 3 花就谢\n",
      "1 5 堵是\n",
      "1 4 炸油条\n",
      "1 5 广播体操\n",
      "1 5 下第二场\n",
      "1 4 肥大\n",
      "1 4 烟光山\n",
      "1 4 撰书\n",
      "1 3 蚯蚓\n",
      "1 3 步赢斋鞋店\n",
      "1 4 阔然\n",
      "1 4 最远点\n",
      "1 5 株式会社\n",
      "1 4 雾色\n",
      "1 5 管一下吧\n",
      "3 5 爱党\n",
      "1 5 套起来\n",
      "1 4 的萧山机场\n",
      "1 5 伞柄\n",
      "2 5 预知\n",
      "1 5 有一帆\n",
      "1 4 干完\n",
      "1 5 三面石峰\n",
      "2 4 荟集\n",
      "2 4 摇手\n",
      "1 2 臭汗\n",
      "1 3 蓝景那\n",
      "1 4 昌平区小汤山农业科技示范园东区内\n",
      "1 4 玩一个人\n",
      "1 4 降妖\n",
      "2 5 地级市\n",
      "4 4 标识牌\n",
      "1 5 包天\n",
      "1 4 拳拳\n",
      "1 4 不自量力\n",
      "1 5 临沧\n",
      "1 5 体检丽水医院\n",
      "1 4 薄命\n",
      "1 5 秋迹\n",
      "1 5 表现形式\n",
      "1 5 村子了\n",
      "1 4 头绪\n",
      "1 4 红白事\n",
      "1 4 ３路\n",
      "1 5 旧区\n",
      "2 5 名园古刹\n",
      "1 5 大后林\n",
      "1 4 讲课\n",
      "1 5 棉织社\n",
      "1 4 地震纪念馆\n",
      "1 5 翻版\n",
      "1 3 就绿化好点\n",
      "1 3 民族园路\n",
      "1 5 笫\n",
      "1 4 南浦大桥\n",
      "1 5 成都双流国际机场\n",
      "4 5 丛山\n",
      "2 5 一伙人\n",
      "1 5 三春晖\n",
      "1 4 黄葛\n",
      "1 3 乘马\n",
      "1 5 69路\n",
      "6 5 起起伏伏\n",
      "1 4 泥砖\n",
      "1 5 美而人\n",
      "3 5 宫室\n",
      "2 3 root\n",
      "1 4 受灾\n",
      "1 3 望湖楼\n",
      "1 5 肌肤\n",
      "1 5 莫惜\n",
      "1 4 居鹿田\n",
      "1 4 现职\n",
      "1 4 外远远\n",
      "1 5 九间大殿\n",
      "1 5 >POCO<br\n",
      "1 4 鼓足勇气\n",
      "1 4 虽为\n",
      "3 5 张口\n",
      "1 5 像男人\n",
      "1 5 科博会\n",
      "1 4 精疲力竭\n",
      "1 5 吼叫声\n",
      "1 5 bling\n",
      "1 5 一家独大\n",
      "1 5 溺水者\n",
      "1 5 游一生\n",
      "2 4 依衬\n",
      "1 5 海浪般\n",
      "1 3 清净寺\n",
      "1 5 莫哭\n",
      "6 5 盘古\n",
      "1 5 迈入\n",
      "5 4 说到底\n",
      "2 5 喜欢自己一个人\n",
      "1 4 修护\n",
      "2 4 喂鸟\n",
      "1 3 掘起\n",
      "1 5 没心没肺\n",
      "1 3 咏唱\n",
      "1 5 湿润气候\n",
      "1 4 杀马特\n",
      "1 5 贵字\n",
      "1 5 henhaohenhaohen\n",
      "1 3 983路\n",
      "1 5 穿越一个停车场\n",
      "1 4 脚不沾地\n",
      "2 5 磨炼\n",
      "1 2 纯粹站\n",
      "1 4 3511826\n",
      "2 4 永兴\n",
      "2 5 寻梦\n",
      "1 5 蛇行\n",
      "1 5 放浪\n",
      "1 3 地望\n",
      "3 5 明柱\n",
      "1 5 湛碧\n",
      "1 4 温泉馆\n",
      "1 5 珊瑚沙水库\n",
      "1 5 蜀地\n",
      "1 5 悄声\n",
      "2 5 爱泰山\n",
      "1 3 盖酒店\n",
      "1 4 刷上\n",
      "1 5 龙旗\n",
      "1 4 舒放\n",
      "1 5 首日\n",
      "1 3 北京市劳动人民文化宫\n",
      "1 5 昔闻洞庭\n",
      "1 5 嗔怪\n",
      "1 3 国子学\n",
      "1 5 吹响\n",
      "1 3 必停\n",
      "2 5 芦沟桥\n",
      "1 4 战争馆\n",
      "1 5 黄鹤而\n",
      "1 3 大我可\n",
      "1 5 塔和罗星洲\n",
      "1 5 领收\n",
      "2 4 登斯\n",
      "1 5 出人命\n",
      "1 5 阳气\n",
      "1 5 兵书\n",
      "1 4 吭哧\n",
      "1 5 松谷庵\n",
      "1 3 西安城西客运站\n",
      "2 5 原始性\n",
      "1 4 金融管理\n",
      "1 4 浓厚兴趣\n",
      "1 5 赛达\n",
      "1 5 much\n",
      "1 5 缺人\n",
      "1 5 划过来\n",
      "2 5 圆圈\n",
      "4 5 顺德\n",
      "4 5 文化广场站\n",
      "1 5 兵变\n",
      "2 4 波罗密\n",
      "1 5 蔚竹庵\n",
      "1 4 追究\n",
      "2 5 后脑勺\n",
      "1 3 追下\n",
      "1 4 前石门村\n",
      "1 5 京调\n",
      "1 4 条条大路通罗马\n",
      "1 5 崮\n",
      "1 4 奥利奥\n",
      "1 5 自行车党\n",
      "2 5 天下第一名社\n",
      "1 5 Hongkong\n",
      "3 5 1977\n",
      "4 5 诚实\n",
      "1 5 賢\n",
      "1 4 作乱\n",
      "1 5 水月观音\n",
      "1 5 逆水\n",
      "2 5 公通\n",
      "1 4 棚屋\n",
      "1 3 党组织\n",
      "1 5 的堤路\n",
      "2 5 日思夜想\n",
      "1 4 未见其人\n",
      "1 4 吓出\n",
      "2 5 民餐厅\n",
      "2 5 石成门\n",
      "1 4 圣代\n",
      "1 5 复印件\n",
      "1 5 配楼\n",
      "9 5 照出来\n",
      "2 5 簇拥着\n",
      "1 4 承光殿\n",
      "1 4 玻璃环境台\n",
      "1 5 浙直分署\n",
      "2 4 项目的沙漠游乐场\n",
      "1 3 楼堂\n",
      "1 3 言论\n",
      "1 4 马路南\n",
      "1 5 载往\n",
      "2 4 比湖区\n",
      "1 5 只恐\n",
      "2 5 下码头\n",
      "1 4 曾云\n",
      "1 5 宣传一下吧\n",
      "1 4 欢愉\n",
      "2 5 桂花园\n",
      "2 4 侨乡\n",
      "1 4 国家体育馆广场好大\n",
      "1 5 传输\n",
      "1 5 高且宽\n",
      "2 4 稀罕物\n",
      "1 3 冠于\n",
      "1 4 情系宋朝人\n",
      "2 5 至关重要\n",
      "2 4 五镇\n",
      "1 5 那鹰\n",
      "2 4 茅草亭\n",
      "2 5 差事\n",
      "1 4 护法神\n",
      "1 5 成李冰\n",
      "1 3 驯狮\n",
      "1 4 台湖镇\n",
      "1 3 铁球\n",
      "1 5 光棍节\n",
      "2 4 不像样\n",
      "2 5 生活中的人物制造\n",
      "1 5 华侨城大剧院\n",
      "2 5 驚\n",
      "1 5 对灵隐寺有\n",
      "1 4 灵隐寺7点\n",
      "1 4 防范措施\n",
      "1 4 张骞\n",
      "1 5 学生们会\n",
      "1 5 二郎剑景区吧\n",
      "1 4 来你会\n",
      "1 5 卡宾吧\n",
      "2 5 地理学家\n",
      "2 5 报信\n",
      "3 4 图文\n",
      "1 5 外星人\n",
      "1 5 投用\n",
      "2 4 洄\n",
      "1 5 带点就行\n",
      "2 4 睡衣\n",
      "1 5 排毒\n",
      "1 5 13664530756\n",
      "1 5 威利\n",
      "1 4 少见多怪\n",
      "1 5 释怀\n",
      "1 4 狐朋狗友\n",
      "1 5 端详\n",
      "1 5 80元吧\n",
      "2 4 87972452\n",
      "2 5 术士\n",
      "1 5 余朱\n",
      "1 4 梅花而\n",
      "1 5 人生观\n",
      "1 4 逢迎\n",
      "1 5 笔锋\n",
      "1 5 花域\n",
      "1 5 黄叶很\n",
      "1 5 民国文化馆\n",
      "2 5 生日礼物\n",
      "1 5 静如处子\n",
      "1 5 中国比较大\n",
      "1 4 山长水远\n",
      "1 4 视死\n",
      "1 4 林菽庄\n",
      "4 5 转水\n",
      "2 5 小秘密\n",
      "1 4 民用航空\n",
      "1 5 于安昌\n",
      "2 5 小金鱼\n",
      "2 5 可好了\n",
      "1 4 强迫性\n",
      "1 5 容妃\n",
      "1 5 雷履泰\n",
      "4 4 东海大桥\n",
      "1 4 135.7\n",
      "1 5 旅游线路设计\n",
      "1 2 虧\n",
      "2 4 中天竺国\n",
      "1 5 小说作品\n",
      "1 5 花还少点\n",
      "1 5 冻手\n",
      "1 5 评估单位\n",
      "1 4 摆龙门阵\n",
      "1 5 环境配套会\n",
      "1 5 吓唬人\n",
      "1 4 那头北极\n",
      "1 5 章程\n",
      "1 3 介绍会\n",
      "1 4 血型\n",
      "1 4 湖南市\n",
      "1 3 浴缸\n",
      "1 5 两州\n",
      "1 4 来楼\n",
      "1 4 旁白河\n",
      "4 4 隋末\n",
      "1 4 环保香\n",
      "1 5 黄河三角洲\n",
      "1 5 一点博物馆\n",
      "1 5 30里处\n",
      "1 5 广利\n",
      "1 4 全重点大学\n",
      "1 5 快完了\n",
      "1 5 惶惶然\n",
      "1 4 一个外国团\n",
      "2 5 家底\n",
      "1 5 客地\n",
      "2 4 一年中都\n",
      "1 4 本科毕业\n",
      "1 5 班禅拉泽\n",
      "1 5 药厂组织\n",
      "1 4 漠河火车站会\n",
      "1 5 警官证\n",
      "2 5 真貌\n",
      "1 5 尊德堂\n",
      "2 5 北京市天安门广场\n",
      "1 5 禅门\n",
      "1 5 松桦恋\n",
      "1 4 崇古堂\n",
      "1 4 得过且过\n",
      "1 4 飘萍\n",
      "1 4 儿茶\n",
      "1 4 力量型\n",
      "1 5 的野道\n",
      "1 5 行大典礼\n",
      "1 3 百鸟朝凤\n",
      "1 3 国家标准\n",
      "1 4 享受型\n",
      "1 5 祖父母\n",
      "3 5 1天半\n",
      "1 4 点东西就行\n",
      "5 4 段落\n",
      "1 4 现场表演\n",
      "3 4 朝阳楼\n",
      "1 5 布列松\n",
      "1 4 孤寂感\n",
      "1 4 一进馆\n",
      "1 3 延恩寺\n",
      "1 4 新百\n",
      "1 3 妄语\n",
      "1 5 招远\n",
      "1 5 治理江\n",
      "1 5 扭秧歌\n",
      "1 4 吉林通化人\n",
      "1 4 添加物\n",
      "2 4 卖烧饼\n",
      "1 4 的雷洞坪\n",
      "1 5 禁不起\n",
      "1 5 云无雾\n",
      "1 4 压腿\n",
      "1 4 楼座\n",
      "1 5 hbbjkkhfdxvbjhhvvcc\n",
      "1 4 心太软\n",
      "1 5 申奥\n",
      "1 3 双人间\n",
      "1 4 paradise\n",
      "1 5 五房\n",
      "1 5 钱谷\n",
      "1 4 团河北村\n",
      "2 5 大庆\n",
      "1 3 学术思想\n",
      "4 4 圆圆的\n",
      "1 3 兼得\n",
      "1 5 咱这\n",
      "2 4 墙子\n",
      "2 3 水兽\n",
      "2 5 老母亲\n",
      "1 4 京津唐\n",
      "1 5 欧阳中石\n",
      "1 5 白山市\n",
      "3 5 王新民\n",
      "2 5 校风\n",
      "3 5 送达\n",
      "1 4 小幼营村\n",
      "1 5 索道可以通用\n",
      "1 4 南门进院\n",
      "1 5 纪晓岚故居纪念馆\n",
      "1 3 苏堤才\n",
      "3 5 消退\n",
      "1 4 牧群\n",
      "2 5 悟道\n",
      "1 5 银练\n",
      "1 4 杨柳啦\n",
      "1 4 汤泡饭\n",
      "1 5 马帅哥\n",
      "1 5 新区现代\n",
      "1 4 雍和宫地铁站\n",
      "1 4 南海子麋鹿苑\n",
      "1 5 修正道\n",
      "5 5 电台\n",
      "1 4 运至\n",
      "2 5 位高权重\n",
      "1 4 2.25\n",
      "3 4 黎村\n",
      "2 4 才有人\n",
      "1 5 景德镇市\n",
      "2 4 洗澡水\n",
      "1 4 猫空\n",
      "1 5 旅游圣地吧\n",
      "1 4 笺\n",
      "1 3 连灯\n",
      "1 4 米粮库\n",
      "1 4 游瑶\n",
      "2 5 佩环\n",
      "1 2 变法维新\n",
      "1 5 提笔\n",
      "2 5 就有8处\n",
      "1 4 叫安\n",
      "6 4 圣弥\n",
      "1 4 丰城\n",
      "1 5 贝鲁托奇\n",
      "1 4 中央集权\n",
      "1 3 二三流\n",
      "2 4 土笋\n",
      "1 3 山为寺\n",
      "1 5 人行天桥\n",
      "1 5 将黄山\n",
      "1 5 宫崎骏\n",
      "1 5 商务部\n",
      "1 3 宰羊\n",
      "1 4 水滴让\n",
      "1 5 毕节市\n",
      "2 5 岳是有\n",
      "1 4 见鬼\n",
      "1 1 北京机场\n",
      "1 3 找家店\n",
      "1 3 猫耳\n",
      "1 5 号线北海北站\n",
      "1 5 华严湖\n",
      "1 5 岛上刚\n",
      "2 5 一条碧\n",
      "4 5 季度\n",
      "1 5 黄岩很\n",
      "1 5 湖道\n",
      "1 5 纯情\n",
      "2 5 楼中楼\n",
      "1 4 1153\n",
      "1 4 和遂昌\n",
      "1 4 重大事件\n",
      "1 4 前两处\n",
      "2 5 龙井市\n",
      "1 5 江心岛\n",
      "1 4 培根\n",
      "2 5 蘸\n",
      "1 5 公交都是有\n",
      "1 4 孟小冬\n",
      "1 3 雁鸣\n",
      "1 5 新时代女\n",
      "1 5 东北门\n",
      "1 5 韦皋\n",
      "1 5 那是何\n",
      "1 4 酒坛子\n",
      "1 3 利与弊\n",
      "2 4 news\n",
      "2 5 千山万水\n",
      "1 5 潜入\n",
      "1 4 固态\n",
      "1 5 连过\n",
      "1 4 残冬\n",
      "3 5 不拘\n",
      "1 5 Uber\n",
      "1 5 无须再\n",
      "1 5 忽实\n",
      "1 5 哪点\n",
      "2 5 张导\n",
      "2 5 南岸街道\n",
      "1 5 三元一个人\n",
      "1 4 仔细检查\n",
      "1 5 公然\n",
      "1 4 熊熊燃烧\n",
      "1 3 第一座铁路\n",
      "1 5 外八字\n",
      "1 4 分辨真假\n",
      "1 5 加宽\n",
      "1 4 完王池\n",
      "1 4 响潭村\n",
      "1 4 崤\n",
      "1 5 533505645\n",
      "1 5 大呼小叫\n",
      "1 4 海子和\n",
      "1 3 岌岌可危\n",
      "2 4 出生于\n",
      "4 5 石峰林\n",
      "1 4 使领馆\n",
      "1 5 玉屏索道内\n",
      "1 3 龙鼻洞\n",
      "1 4 郑隐轩\n",
      "1 3 菜籽油\n",
      "1 5 轻捷\n",
      "1 4 黑糯米\n",
      "1 5 唯妙\n",
      "1 3 一个宽点\n",
      "1 4 甘冽\n",
      "1 4 买糕团\n",
      "1 5 江夏区\n",
      "1 5 巴东县\n",
      "1 4 巨石阵\n",
      "1 5 玩[微笑]\n",
      "1 5 橘子洲比较大\n",
      "1 5 熊大熊\n",
      "2 4 2016.10.6\n",
      "1 5 正法\n",
      "1 4 弈谱\n",
      "1 5 微风细雨\n",
      "3 4 北京工业大学\n",
      "1 4 闲趣\n",
      "2 5 26万\n",
      "2 4 清波门处\n",
      "1 5 马上又\n",
      "1 5 接满\n",
      "1 5 游垂云\n",
      "1 4 异样\n",
      "1 4 地方有江南贡院\n",
      "1 5 地理书\n",
      "1 3 星神\n",
      "2 4 全是按\n",
      "2 5 国内影视\n",
      "1 5 李白有\n",
      "2 5 风管\n",
      "1 4 最大者\n",
      "1 4 有违\n",
      "1 5 南苑区\n",
      "1 5 归纳起来\n",
      "1 4 罩子\n",
      "2 5 三十七\n",
      "1 4 换下\n",
      "2 5 春天里\n",
      "1 4 海淀镇\n",
      "1 5 摄人魂魄\n",
      "6 5 高能\n",
      "1 5 80013631\n",
      "1 4 鐵興\n",
      "2 5 笑道\n",
      "1 5 file\n",
      "2 4 工商管理\n",
      "1 3 荒山野林\n",
      "1 4 武山庙\n",
      "1 5 白塔岭\n",
      "1 4 小家庭\n",
      "1 1 中二郎剑\n",
      "2 4 欧尚\n",
      "1 4 舒尔哈齐\n",
      "1 4 现为中华人民共和国公安部\n",
      "1 1 1200一\n",
      "4 5 高用\n",
      "1 4 滴关系\n",
      "1 5 难以达到\n",
      "1 5 披露\n",
      "1 5 犬牙\n",
      "1 3 洛阳人\n",
      "2 4 酉山\n",
      "1 4 借东风\n",
      "2 4 潦草\n",
      "8 4 喂养\n",
      "1 4 作厨房\n",
      "2 4 音像制品\n",
      "1 5 夏代\n",
      "2 4 EX\n",
      "1 3 闻达\n",
      "1 4 摄政王\n",
      "7 5 美丽动人\n",
      "1 4 云和田\n",
      "1 4 约瑟\n",
      "1 4 就回旅社\n",
      "1 4 意大利餐厅\n",
      "2 4 老电影\n",
      "1 5 游艺机\n",
      "2 5 习夫人\n",
      "1 3 boss\n",
      "1 3 通公园了\n",
      "3 5 变暖\n",
      "1 5 薪金\n",
      "1 3 美上岛\n",
      "3 5 望朔\n",
      "1 3 诺日郎\n",
      "1 5 条街人\n",
      "1 5 初中高中\n",
      "1 5 找乐子\n",
      "1 5 集于一身\n",
      "1 4 浙江省委\n",
      "1 5 溶窝\n",
      "1 4 赵县\n",
      "2 5 李姐\n",
      "1 3 三步并作两步\n",
      "1 3 门厨房\n",
      "2 4 pizza\n",
      "1 4 头晕眼花\n",
      "1 4 的草坛\n",
      "1 5 退货\n",
      "1 4 五元桥\n",
      "2 5 公园内商店\n",
      "12 5 长流\n",
      "1 5 楼人巨\n",
      "2 5 许多百年老店\n",
      "1 5 13574931259\n",
      "1 5 当五星宾馆\n",
      "1 3 走后建\n",
      "1 5 才带火\n",
      "1 4 成一朵\n",
      "3 4 桃花的\n",
      "1 4 书名\n",
      "1 5 龙翔桥地铁站\n",
      "2 5 sxrj\n",
      "1 4 btw\n",
      "1 4 中亚\n",
      "1 5 帮玩雕刻\n",
      "1 4 难料\n",
      "4 4 确需\n",
      "1 4 瑞堂\n",
      "1 3 红粉\n",
      "1 5 塔儿寺\n",
      "1 5 临江门广场\n",
      "1 5 神丹\n",
      "1 5 丝绢\n",
      "3 5 揭秘\n",
      "2 4 五六站\n",
      "1 4 大锤\n",
      "2 5 麻辣味\n",
      "1 4 联运票\n",
      "1 5 国家政府\n",
      "1 5 真心累人\n",
      "1 4 京险\n",
      "1 5 Jilin\n",
      "1 5 许愿我\n",
      "2 5 SPA\n",
      "1 5 望是另\n",
      "1 4 带钱\n",
      "1 5 扔上去\n",
      "2 4 城轨\n",
      "1 5 不好不坏\n",
      "2 4 Ｂ\n",
      "2 5 长洲\n",
      "1 4 旺兴湖公园公用一个停车场\n",
      "1 4 就已经10点\n",
      "1 5 施放\n",
      "1 5 饮酒作乐\n",
      "1 5 望河楼\n",
      "1 5 考察其产品\n",
      "1 5 意气风发\n",
      "3 5 北齐\n",
      "1 5 鼎边糊\n",
      "1 5 533485679\n",
      "1 5 堆公园等\n",
      "1 4 大岳\n",
      "1 4 昆虫博物馆\n",
      "1 4 慌忙\n",
      "1 5 醪糟\n",
      "3 4 花居\n",
      "2 5 拉拽\n",
      "2 5 先闻其声\n",
      "1 3 的城市全部都有\n",
      "1 4 长须\n",
      "4 5 入城\n",
      "1 5 井冈山山\n",
      "2 4 马粪\n",
      "1 5 瓦斯\n",
      "1 5 免于\n",
      "1 5 面美丽\n",
      "1 5 捎带\n",
      "1 5 自惭\n",
      "2 4 小屋子\n",
      "1 4 围挡\n",
      "4 5 优待\n",
      "1 4 天天排队\n",
      "1 5 飞龙湖\n",
      "2 4 新科技\n",
      "2 5 密竹\n",
      "1 4 双文\n",
      "1 4 所长\n",
      "1 4 木式\n",
      "2 5 十洲\n",
      "3 5 5605\n",
      "1 4 月牙泉里\n",
      "1 5 水盘\n",
      "1 3 逻辑学\n",
      "1 5 胖仔\n",
      "2 5 中山陵（博爱广场\n",
      "2 5 合法\n",
      "1 4 怀柔北站\n",
      "2 5 中国内\n",
      "1 5 续借\n",
      "2 5 商务会所\n",
      "1 3 约杭城\n",
      "2 4 黑白灰\n",
      "1 4 大量旅游团\n",
      "2 5 湘南寺\n",
      "2 4 翻译成\n",
      "2 5 都江堰站\n",
      "1 5 楼角\n",
      "1 5 中国轻纺城\n",
      "1 4 龟博\n",
      "1 5 单条\n",
      "3 5 溪畔\n",
      "1 3 馆学院\n",
      "1 3 生产建设兵团\n",
      "1 5 少卿\n",
      "2 4 鸭汤\n",
      "1 4 水大桥\n",
      "1 4 北交大\n",
      "2 5 身患\n",
      "1 5 排气管\n",
      "2 5 一下书院\n",
      "1 4 32.50\n",
      "1 4 速滑\n",
      "1 5 毁损\n",
      "2 5 湖区里\n",
      "1 4 学政\n",
      "1 5 地理知识\n",
      "1 4 宋太宗\n",
      "1 4 1576\n",
      "1 5 石峰之\n",
      "2 5 工笔\n",
      "1 5 2208\n",
      "1 4 懸\n",
      "1 4 船王\n",
      "1 4 登山包\n",
      "1 5 的六安\n",
      "1 5 感觉[微笑]\n",
      "1 2 八卦台\n",
      "2 5 荣军院\n",
      "1 3 浑浑噩噩\n",
      "1 4 王钱塘\n",
      "2 5 检票吧\n",
      "1 5 开洞\n",
      "1 5 阿尔泰山\n",
      "1 3 水下了\n",
      "1 5 瘐\n",
      "1 4 心切\n",
      "1 3 滴翠峡\n",
      "1 4 柜面\n",
      "1 4 神宫监\n",
      "1 4 日出一点\n",
      "1 4 时必定\n",
      "1 5 金窑\n",
      "3 5 销声匿迹\n",
      "1 4 鹤立鸡群\n",
      "1 5 成爱晚\n",
      "1 5 新自由\n",
      "2 4 嘱咐\n",
      "1 4 PAGE\n",
      "1 5 彪马\n",
      "1 4 赛时为击剑馆\n",
      "1 4 紫苏\n",
      "1 4 皇宫博物馆\n",
      "1 5 急刹车\n",
      "1 5 天福号\n",
      "1 5 故园\n",
      "1 3 稍带\n",
      "1 5 缓冲区\n",
      "4 5 香辣蟹\n",
      "1 5 赶潮流\n",
      "1 3 望郎峰\n",
      "1 4 美人计\n",
      "2 5 心扉\n",
      "3 5 拍案惊奇\n",
      "1 5 袒露\n",
      "1 5 754378873\n",
      "1 5 度假休闲中心\n",
      "1 3 人少也有关系\n",
      "1 4 冷和\n",
      "4 5 仰首\n",
      "1 3 中瑞影城\n",
      "1 5 景区整体比较大\n",
      "2 4 戒酒\n",
      "1 4 中台东\n",
      "1 3 饭店商店\n",
      "1 4 吉阳\n",
      "1 5 凤凰岛\n",
      "1 4 顾皇城\n",
      "3 5 上清水\n",
      "8 5 好险\n",
      "1 4 溢口\n",
      "1 5 陇右\n",
      "1 5 磨墨\n",
      "4 5 路太陡\n",
      "1 4 独善其身\n",
      "2 5 很多宾馆\n",
      "1 5 高立佛\n",
      "1 4 鸭泽湖\n",
      "2 5 化州\n",
      "3 5 瑞金\n",
      "1 4 很多鸟\n",
      "1 4 LOGO\n",
      "1 4 错漏\n",
      "5 5 群仙所\n",
      "1 4 朝阳区芳园西路丽都花园\n",
      "1 5 收收\n",
      "2 4 读史\n",
      "1 5 一圈故宫\n",
      "1 4 都修上\n",
      "1 4 假山里有\n",
      "1 4 含铁\n",
      "2 5 经管\n",
      "1 3 振铃\n",
      "1 5 科技产业\n",
      "1 5 特别站\n",
      "1 3 鲍村\n",
      "1 4 医药公司\n",
      "3 5 西沟\n",
      "3 5 清华西门\n",
      "1 3 武阳村\n",
      "1 5 实惠人\n",
      "1 5 梵高\n",
      "1 5 回家途中\n",
      "1 5 开合\n",
      "1 5 福祉\n",
      "1 5 大美泰山\n",
      "1 4 善信\n",
      "1 4 分得清\n",
      "2 5 交纳\n",
      "1 4 偷工减料\n",
      "1 4 两方\n",
      "1 4 西顶\n",
      "1 4 美景园\n",
      "1 5 匾牌\n",
      "1 5 一下王家大院\n",
      "1 5 很多小客栈\n",
      "2 5 罗国\n",
      "1 4 磨砂玻璃\n",
      "1 4 玻璃柜\n",
      "1 5 美滴夜\n",
      "1 4 农民房\n",
      "1 5 村至阳朔\n",
      "1 4 利器\n",
      "2 5 1314\n",
      "1 5 余所国立大学\n",
      "4 5 彷佛\n",
      "1 4 英宗\n",
      "1 4 空军疗养院\n",
      "1 4 苹果零售店\n",
      "1 5 会餐\n",
      "5 4 村长\n",
      "1 4 殷兆镛\n",
      "1 4 多郑州\n",
      "1 3 偏上\n",
      "1 5 土炕\n",
      "1 4 玉泉站\n",
      "2 4 蓝三\n",
      "2 5 厮打\n",
      "1 5 仲泉\n",
      "1 5 示现\n",
      "1 4 没中\n",
      "1 4 南沙区有\n",
      "1 4 北京外国语大学\n",
      "1 5 黄龙乡\n",
      "1 3 陈延敬\n",
      "1 4 中银大厦\n",
      "1 4 小修\n",
      "1 5 潘小莲\n",
      "1 3 颐养\n",
      "1 5 此岸\n",
      "1 5 船帆\n",
      "1 5 一言以蔽之\n",
      "1 5 非吃不可\n",
      "1 4 中国航天员科研训练中心\n",
      "1 4 宋家庄站\n",
      "2 4 局长\n",
      "2 5 恍如梦境\n",
      "1 4 級風\n",
      "2 4 老大娘\n",
      "1 5 坑州西湖\n",
      "1 4 多云转晴\n",
      "1 1 荒丘\n",
      "1 5 强劲\n",
      "1 4 经营酒吧\n",
      "1 4 手机壳\n",
      "3 5 无奇不有\n",
      "1 4 满嘴都是\n",
      "1 3 鱼而已\n",
      "2 4 南浦\n",
      "2 4 关林北\n",
      "1 4 靶场\n",
      "4 5 花海中\n",
      "1 5 第一世界\n",
      "3 5 全部内容\n",
      "1 5 莲花生\n",
      "2 5 香茗\n",
      "1 5 2673\n",
      "1 5 棉帽\n",
      "1 5 一不留神\n",
      "1 4 小沙坡\n",
      "1 5 管理可\n",
      "1 5 摊鸡蛋\n",
      "1 4 热爱生活\n",
      "1 4 驻点\n",
      "1 5 欢情\n",
      "1 3 年味儿\n",
      "2 5 老堡\n",
      "1 4 来次内蒙\n",
      "1 5 290一\n",
      "1 4 余香\n",
      "2 5 偏西\n",
      "1 4 环极楼\n",
      "1 5 生态县\n",
      "1 4 成份\n",
      "3 5 妥善\n",
      "1 4 龙在上\n",
      "1 5 陆游八\n",
      "1 5 从上山\n",
      "2 5 观澜\n",
      "1 3 林学家\n",
      "1 4 大心心\n",
      "3 4 回旋\n",
      "1 5 诊断书\n",
      "1 3 董黯\n",
      "1 4 最新式\n",
      "1 4 多依水\n",
      "1 5 蜜月游\n",
      "1 4 怀来\n",
      "1 4 故屏南有\n",
      "1 5 元照\n",
      "2 5 的天水\n",
      "1 5 6.3万\n",
      "1 4 米粮\n",
      "1 5 放心车\n",
      "2 4 中山）指挥所\n",
      "2 5 举步\n",
      "1 5 嵇康\n",
      "2 5 清晰度\n",
      "1 4 物会\n",
      "1 4 队摄影团\n",
      "1 5 保叔山\n",
      "1 4 北京丰台区南苑路\n",
      "2 4 双生子\n",
      "1 5 深受教育\n",
      "1 5 天文学家\n",
      "1 5 34一\n",
      "1 5 张家界华雨客栈\n",
      "1 4 起飞前\n",
      "1 3 考入\n",
      "1 4 章旦红\n",
      "1 5 程辉\n",
      "1 4 神达\n",
      "1 4 好几支旅行团\n",
      "1 4 既然如此\n",
      "3 4 海因\n",
      "1 4 秦皇岛市里\n",
      "2 4 山卡\n",
      "1 3 油渣\n",
      "1 4 所进步\n",
      "1 4 郁郁苍苍\n",
      "1 5 张锦秋设计\n",
      "1 5 自然两大\n",
      "2 5 坛城中\n",
      "2 4 灌肠\n",
      "1 4 皮货\n",
      "1 3 茂兰\n",
      "1 5 山林等等\n",
      "1 4 即溪\n",
      "1 5 羊肚菌\n",
      "14 5 至高无上\n",
      "1 4 特别版\n",
      "1 4 ６８\n",
      "1 5 纳洞\n",
      "1 4 一夜情\n",
      "2 4 明孝陵和美\n",
      "8 5 天女\n",
      "2 3 渡江\n",
      "1 4 延著湖\n",
      "1 5 知耻而后勇\n",
      "1 4 西门峡\n",
      "1 5 国民政府教育部\n",
      "2 4 1024\n",
      "1 5 云遮雾障\n",
      "1 4 一条新铺\n",
      "1 4 钟流\n",
      "1 4 人民丰碑处\n",
      "1 4 躲过一劫\n",
      "1 4 时逢\n"
     ]
    },
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-39-7f92fcae77e6>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mtrain\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mread_csv\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'../input/train_first.csv'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mword\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mwordSet\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m     \u001b[0mallOneLabel\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtrain\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mword\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m<ipython-input-36-d10082beda42>\u001b[0m in \u001b[0;36mallOneLabel\u001b[0;34m(train, word)\u001b[0m\n\u001b[1;32m      6\u001b[0m     \u001b[0mcnt\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m      7\u001b[0m     \u001b[0mlabel_\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m-\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m     \u001b[1;32mfor\u001b[0m \u001b[0mi\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdiscuss\u001b[0m \u001b[1;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpredict_discuss\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      9\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mword\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mdiscuss\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m     10\u001b[0m             \u001b[1;32mif\u001b[0m \u001b[0mlabel_\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;33m-\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mlabel_\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlabel\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "train = pd.read_csv('../input/train_first.csv')\n",
    "for word in wordSet:\n",
    "    allOneLabel(train, word)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>a</th>\n",
       "      <th>b</th>\n",
       "      <th>c</th>\n",
       "      <th>d</th>\n",
       "      <th>mean</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>12123</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>2.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>21312</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "      <td>5.5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      id  a  b  c  d  mean\n",
       "0  12123  1  2  3  4   2.5\n",
       "1  21312  4  5  6  7   5.5"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "hello = pd.read_csv('hello.csv')\n",
    "hello.head()\n",
    "\n",
    "hello['mean'] = hello[['a', 'b', 'c', 'd']].mean(axis = 1)\n",
    "hello.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
